package br.org.credfaz.ficha.action;

import java.sql.Date;
import java.text.ParseException;
import java.util.List;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

import br.org.credfaz.ficha.dao.AvalFinanceiraDAO;
import br.org.credfaz.ficha.dao.ClienteDAO;
import br.org.credfaz.ficha.dao.ClienteFisicaDAO;
import br.org.credfaz.ficha.dao.ClienteInstUnidadeDAO;
import br.org.credfaz.ficha.dao.ContaCapitalDAO;
import br.org.credfaz.ficha.dao.ContaCorrenteDAO;
import br.org.credfaz.ficha.dao.ContratoCreditoDAO;
import br.org.credfaz.ficha.dao.ContratoMutuoDAO;
import br.org.credfaz.ficha.dao.EmailClienteDAO;
import br.org.credfaz.ficha.dao.EnderecoClienteDAO;
import br.org.credfaz.ficha.dao.LancamentoCcaDAO;
import br.org.credfaz.ficha.dao.PlanoPagamentoDAO;
import br.org.credfaz.ficha.dao.SaldoDevedorDAO;
import br.org.credfaz.ficha.dao.TelefoneClienteDAO;
import br.org.credfaz.ficha.dao.TrabalhaDAO;
import br.org.credfaz.ficha.modelo.AvalFinanceira;
import br.org.credfaz.ficha.modelo.Cliente;
import br.org.credfaz.ficha.modelo.ClienteFisica;
import br.org.credfaz.ficha.modelo.ClienteInstUnidade;
import br.org.credfaz.ficha.modelo.ContaCapital;
import br.org.credfaz.ficha.modelo.ContaCorrente;
import br.org.credfaz.ficha.modelo.ContratoCredito;
import br.org.credfaz.ficha.modelo.ContratoMutuo;
import br.org.credfaz.ficha.modelo.EmailCliente;
import br.org.credfaz.ficha.modelo.EnderecoCliente;
import br.org.credfaz.ficha.modelo.Idade;
import br.org.credfaz.ficha.modelo.LacamentoCca;
import br.org.credfaz.ficha.modelo.PlanoPagamento;
import br.org.credfaz.ficha.modelo.SaldoDevedor;
import br.org.credfaz.ficha.modelo.TelefoneCliente;
import br.org.credfaz.ficha.modelo.Trabalha;
import br.org.credfaz.ficha.utils.CalculaDias;
import br.org.credfaz.ficha.utils.CalculaIdade;
import br.org.credfaz.ficha.utils.CalculaSaldoDevedor;

public class MostraClienteAction {

	private Long idcliente;
	private Cliente cliente;
	private List<EnderecoCliente> endereco;
	private ContaCapital ccapital;
	private ContaCorrente cc;
	private List<ContratoCredito> ccredito;
	private List<ContratoMutuo> cmutuo;
	private List<PlanoPagamento> ppagamento;
	private ClienteFisica cfisica;
	private AvalFinanceira avalfinac;
	private ClienteInstUnidade ciunidade;
	private Trabalha trab;
	private Idade idade;
	private PlanoPagamento sd;
	private LacamentoCca lanccca;
	private EmailCliente email;
	private List<TelefoneCliente> fone;
	
	private float valor;
	private Date datasaida;
	private float txjuros;
	private float numcontrato;
	
	private int excluir = 0;

	private List<SaldoDevedor> saldo;
	
	

	@Action(value = "mostraCliente", results = { 
			@Result(name = "ok", location = "/ficha-cliente.jsp") })
			
	public String execute() throws ParseException {
		
		if (excluir == 1 && numcontrato != 0){
			new SaldoDevedorDAO().excluiCalculo(numcontrato);
		}
		
		if (valor != 0 && txjuros != 0 && datasaida != null && numcontrato != 0){
		new CalculaSaldoDevedor().CalculaSaldo(idcliente, valor, txjuros,
				datasaida, numcontrato);
		}
		
			
		saldo = new SaldoDevedorDAO().buscaPorContrato(idcliente);
		cliente = new ClienteDAO().buscaPorId(idcliente);
		endereco = new EnderecoClienteDAO().buscaPorId(idcliente);
		ccapital = new ContaCapitalDAO().buscaPorId(idcliente);
		setCc(new ContaCorrenteDAO().buscaPorId(idcliente));
		ccredito = new ContratoCreditoDAO().buscaPorId(idcliente);
		cmutuo = new ContratoMutuoDAO().buscaPorId(idcliente);
		ppagamento = new PlanoPagamentoDAO().buscaPorId(idcliente);
		cfisica = new ClienteFisicaDAO().buscaPorId(idcliente);
		avalfinac =  new AvalFinanceiraDAO().buscaPorId(idcliente);
		ciunidade = new ClienteInstUnidadeDAO().buscaPorId(idcliente);
		trab = new TrabalhaDAO().buscaPorId(idcliente);
		idade = new CalculaIdade().buscaPorId(idcliente);
		sd = new CalculaDias().buscaPorId(idcliente);
		lanccca = new LancamentoCcaDAO().buscaPorId(idcliente);
		email = new EmailClienteDAO().buscaPorId(idcliente);
		fone = new TelefoneClienteDAO().buscaPorId(idcliente);
		
		return "ok";
		
	}
	public void setExcluir(int excluir) {
		System.out.println(excluir);
		this.excluir = excluir;
	}

	public List<SaldoDevedor> getSaldo() {
		return saldo;
	}
	public void setValor(float valor) {
		this.valor = valor;
	}


	public void setDatasaida(Date datasaida) {
		this.datasaida = datasaida;
	}


	public void setTxjuros(float txjuros) {
		this.txjuros = txjuros;
	}


	public void setNumcontrato(float numcontrato) {
		this.numcontrato = numcontrato;
	}
	
	public LacamentoCca getLanccca() {
		return lanccca;
	}


	public PlanoPagamento getSd() {
		return sd;
	}

	public void setIdcliente(Long idcliente) {
		System.out.println(idcliente);
		this.idcliente = idcliente;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public List<EnderecoCliente> getEndereco() {
		return endereco;
	}

	public ContaCapital getCcapital() {
		return ccapital;
	}
	public List<ContratoCredito> getCcredito() {
		return ccredito;
	}
	public List<PlanoPagamento> getPpagamento() {
		return ppagamento;
	}
	public ClienteFisica getCfisica(){
		return cfisica;
	}
	public AvalFinanceira getAvalfinac(){
		return avalfinac;
	}
	public ClienteInstUnidade getCiunidade(){
		return ciunidade;
	}
	public Trabalha getTrab() {
		return trab;
	}
	public void setTrab(Trabalha trab) {
		this.trab = trab;
	}
	public List<ContratoMutuo> getCmutuo(){
		return cmutuo;
	}
	public Idade getIdade() {
		return idade;
	}

	public void setIdade(Idade idade) {
		this.idade = idade;
	}
	public void setEmail(EmailCliente email) {
		this.email = email;
	}
	public EmailCliente getEmail() {
		return email;
	}
	public void setFone(List<TelefoneCliente> fone) {
		this.fone = fone;
	}
	public List<TelefoneCliente> getFone() {
		return fone;
	}
	public ContaCorrente getCc() {
		return cc;
	}
	public void setCc(ContaCorrente cc) {
		this.cc = cc;
	}
	
	
	public Integer calculaParcelas(int a, int b){
		return b - a ;
	}
	
	
}
